package com.servlet;

import com.dao.ProductDAO;
import com.dao.impl.ProductDAOImpl;
import com.entity.Product;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.text.SimpleDateFormat;

@WebServlet("/updata")
public class UpdataServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 设置响应类型为 JSON 格式
        response.setContentType("application/json;charset=UTF-8");

        // 从请求中获取商品信息
        String id = request.getParameter("productId");
        String name = request.getParameter("productName");
        String type = request.getParameter("productType");
        String productPrice = request.getParameter("productPrice");
        String productStock = request.getParameter("productStock");
        String image = request.getParameter("productImg");
        String desc = request.getParameter("productDesc");
        String productSales = request.getParameter("productSales");
        String productStatus = request.getParameter("productStatus");
        String productDate = request.getParameter("productDate");  // 获取日期参数

        // 转换价格、库存、销量、状态
        double price = Double.parseDouble(productPrice); // 转换为 Double
        int count = Integer.parseInt(productStock);       // 转换为 Integer
        int sales = Integer.parseInt(productSales);      // 转换为 Integer
        int status = Integer.parseInt(productStatus);    // 转换为 Integer

        // 处理传入的日期字符串（例如：yyyy-MM-dd 格式）
        java.sql.Date sqlDate = null;
        if (productDate != null && !productDate.isEmpty()) {
            // 转换日期字符串为 java.sql.Date
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            try {
                java.util.Date utilDate = dateFormat.parse(productDate);  // 解析为 java.util.Date
                sqlDate = new java.sql.Date(utilDate.getTime());  // 转换为 java.sql.Date
            } catch (Exception e) {
                e.printStackTrace();
                // 如果日期格式错误，可以选择设置为当前日期
                sqlDate = new java.sql.Date(System.currentTimeMillis());  // 使用当前时间
            }
        }

        // 创建商品对象
        Product product = new Product();
        product.setId(id);
        product.setName(name);
        product.setType(type);
        product.setPrice(price);
        product.setCount(count);
        product.setImage(image);
        product.setDesc(desc);
        product.setSale(sales);
        product.setStatus(status);
        product.setDate(sqlDate);  // 设置日期

        // 调用 DAO 更新商品
        ProductDAO productDAO = new ProductDAOImpl();
        int result = productDAO.updateProduct(product); // 获取更新影响的行数

        // 获取响应输出流
        PrintWriter out = response.getWriter();

        // 根据更新结果返回 JSON 响应
        if (result > 0) {
            out.print("{\"code\": 200, \"message\": \"商品修改成功\"}");
        } else {
            out.print("{\"code\": 500, \"message\": \"商品修改失败\"}");
        }
    }
}
